package org.example;

import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;

/**
 * 实验任务1：Apache Commons Lang3工具类使用
 * 学生姓名：易信志
 * 学号：202411671429
 */
public class Task1 {
    public static void main(String[] args) {
        System.out.println("=== 实验任务1：Apache Commons Lang3工具类使用 ===");
        System.out.println("学生姓名：易信志");
        System.out.println("学号：202411671429");
        System.out.println();

        // (3) 使用RandomStringUtils生成指定长度的拉丁字母随机字符串
        System.out.println("(3) 生成指定长度的拉丁字母随机字符串：");
        String latinRandomString = RandomStringUtils.randomAlphabetic(10);
        System.out.println("生成长度为10的拉丁字母随机字符串: " + latinRandomString);
        System.out.println();

        // (4) 使用指定字符串生成随机字符串
        System.out.println("(4) 使用指定字符集生成随机字符串：");
        String customChars = "易信志202411671429";
        String customRandomString = RandomStringUtils.random(15, customChars);
        System.out.println("指定字符集: " + customChars);
        System.out.println("生成长度为15的随机字符串: " + customRandomString);
        System.out.println();

        // (5) 创建ASCII 32-126范围内的随机长度字符串
        System.out.println("(5) 生成ASCII 32-126范围内的随机长度字符串：");
        // 生成ASCII字符集（32-126）
        StringBuilder asciiChars = new StringBuilder();
        for (int i = 32; i <= 126; i++) {
            asciiChars.append((char) i);
        }
        int randomLength = 8 + (int) (Math.random() * 8); // 8-15之间的随机长度
        String asciiRandomString = RandomStringUtils.random(randomLength, asciiChars.toString());
        System.out.println("生成长度" + randomLength + "的ASCII随机字符串: " + asciiRandomString);
        System.out.println();

        // (6) 使用StringUtils工具类
        System.out.println("(6) StringUtils工具类使用：");

        // 准备测试字符串
        String testString1 = ""; // 空字符串
        String testString2 = "hello world"; // 小写字符串
        String testString3 = "HelloWorld"; // 用于截取的字符串

        System.out.println("测试字符串1: '" + testString1 + "'");
        System.out.println("测试字符串2: '" + testString2 + "'");
        System.out.println("测试字符串3: '" + testString3 + "'");
        System.out.println();

        // isEmpty判断
        System.out.println("StringUtils.isEmpty(测试字符串1): " + StringUtils.isEmpty(testString1));
        System.out.println("StringUtils.isEmpty(测试字符串2): " + StringUtils.isEmpty(testString2));

        // upperCase转换
        System.out.println("StringUtils.upperCase(测试字符串2): " + StringUtils.upperCase(testString2));

        // substring截取
        System.out.println("StringUtils.substring(测试字符串3, 0, 2): " + StringUtils.substring(testString3, 0, 2));
        System.out.println();

        // (7) 输出所有生成的字符串及处理结果
        System.out.println("(7) 所有生成的字符串及处理结果汇总：");
        System.out.println("1. 拉丁字母随机字符串: " + latinRandomString);
        System.out.println("2. 自定义字符集随机字符串: " + customRandomString);
        System.out.println("3. ASCII随机字符串: " + asciiRandomString);
        System.out.println("4. 空字符串判断结果: " + StringUtils.isEmpty(testString1));
        System.out.println("5. 大写转换结果: " + StringUtils.upperCase(testString2));
        System.out.println("6. 字符串截取结果: " + StringUtils.substring(testString3, 0, 2));

        System.out.println("\n=== 实验任务1完成 ===");
    }
}
